package web.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/demo6")
public class SessionDemo6 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //获取session对象
        /**
         * 获取请求头中的JSESSIONID对应的cookie对象
         *   能获取
         *      获取到cookie的值（session的id），通过这个值去服务器中找session对象
         *          能找到
         *              直接返回
         *          找不到
         *              创建新的session对象，并且将新的session对象的id通过cookie的形式响应到浏览器端
         *
         *              找不着的可能有两种：
         *                  ① session自然过期了（默认是30分钟）
         *                  ② 服务器关闭（非正常关闭），session对象会随着服务器的内存释放而消失
         *
         *   不能获取
         *      创建新的session对象，并且将新的session对象的id通过cookie的形式响应到浏览器端
         */
        HttpSession session = req.getSession();

//        System.out.println(session);

        /*
            session是一个域对象
                可以在同一个会话的多个不同请求间实现数据共享(具体在 ①请求重定向时使用 ②登录是保存用户信息)
         */
//        session.setAttribute();
//        session.getAttribute();
//        session.removeAttribute();
        session.setAttribute("sessionData","sessionData....");
        req.setAttribute("reqData","reqData....");

        //当用户退出登录或者注销时使用
        session.invalidate();

        resp.sendRedirect(req.getContextPath() + "/demo7");
    }
}
